From a51b694314eaf21f868fc6f5cf372d7f220cf8ed Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sun, 2 Jun 2019 11:39:25 +0200 Subject: [PATCH] gl renderer: Remove homegrown transform_bounds code GskTransform can do this for us now. --- gsk/gl/gskglrenderer.c | 3 --- gsk/gl/gskglrenderops.c | 40 +++++++++++++--------------------------- 2 files changed, 13 insertions(+), 30 deletions(-) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 4f448bc8f3..0cced099f7 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -877,9 +877,6 @@ render_transform_node (GskGLRenderer *self, case GSK_TRANSFORM_CATEGORY_2D_AFFINE: { - graphene_matrix_t mat; - - gsk_transform_to_matrix (node_transform, &mat); ops_push_modelview (builder, node_transform); gsk_gl_renderer_add_render_ops (self, child, builder); ops_pop_modelview (builder); diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c index 9c99fba915..d06ecc5c8f 100644 --- a/gsk/gl/gskglrenderops.c +++ b/gsk/gl/gskglrenderops.c @@ -113,11 +113,16 @@ extract_matrix_metadata (GskTransform *transform, md->scale_y = 1; break; + case GSK_TRANSFORM_CATEGORY_2D_AFFINE: + gsk_transform_to_affine (transform, + &md->scale_x, &md->scale_y, + &md->translate_x, &md->translate_y); + break; + case GSK_TRANSFORM_CATEGORY_UNKNOWN: case GSK_TRANSFORM_CATEGORY_ANY: case GSK_TRANSFORM_CATEGORY_3D: case GSK_TRANSFORM_CATEGORY_2D: - case GSK_TRANSFORM_CATEGORY_2D_AFFINE: { graphene_vec3_t col1; graphene_vec3_t col2; @@ -125,8 +130,8 @@ extract_matrix_metadata (GskTransform *transform, gsk_transform_to_matrix (transform, &m); - /* TODO: Is this event possible (or correct) now that we use a GskTransform here? */ - + /* TODO: 90% sure this is incorrect. But we should never hit this code + * path anyway. */ md->translate_x = graphene_matrix_get_value (&m, 3, 0); md->translate_y = graphene_matrix_get_value (&m, 3, 1); @@ -161,27 +166,7 @@ ops_transform_bounds_modelview (const RenderOpBuilder *builder, head = &g_array_index (builder->mv_stack, MatrixStackEntry, builder->mv_stack->len - 1); - switch (gsk_transform_get_category (head->transform)) - { - case GSK_TRANSFORM_CATEGORY_IDENTITY: - *dst = *src; - break; - - case GSK_TRANSFORM_CATEGORY_2D_TRANSLATE: - *dst = *src; - dst->origin.x += head->metadata.translate_x; - dst->origin.y += head->metadata.translate_y; - break; - - /* TODO: Handle scale */ - case GSK_TRANSFORM_CATEGORY_UNKNOWN: - case GSK_TRANSFORM_CATEGORY_ANY: - case GSK_TRANSFORM_CATEGORY_3D: - case GSK_TRANSFORM_CATEGORY_2D: - case GSK_TRANSFORM_CATEGORY_2D_AFFINE: - default: - gsk_transform_transform_bounds (builder->current_modelview, src, dst); - } + gsk_transform_transform_bounds (builder->current_modelview, src, dst); dst->origin.x += builder->dx * head->metadata.scale_x; dst->origin.y += builder->dy * head->metadata.scale_y; @@ -433,14 +418,15 @@ ops_push_modelview (RenderOpBuilder *builder, if (G_LIKELY (builder->mv_stack->len >= 2)) { const MatrixStackEntry *cur; - GskTransform *t; + GskTransform *t = NULL; cur = &g_array_index (builder->mv_stack, MatrixStackEntry, builder->mv_stack->len - 2); /* Multiply given matrix with current modelview */ - t = gsk_transform_transform (cur->transform, transform); - t = gsk_transform_translate (t, &(graphene_point_t) { builder->dx * scale, builder->dy * scale }); + t = gsk_transform_translate (cur->transform, &(graphene_point_t) { builder->dx * scale, builder->dy * scale}); + t = gsk_transform_transform (t, transform); entry->transform = t; + } else { -- 2.30.2